package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberDO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.NamePageVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.UserPageVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.DropdownItem;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.UserQueryVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.CommonIdVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.MemberInspectAddVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.MemberInspectPageVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.request.MemberInspectUpdateVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.MemberInspectPageQueryVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.MemberInspectVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.MemberRecordInspectPageQueryVO;
import com.ssy.lingxi.member.merchant.model.vo.lifecycle.response.SubMemberQueryVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员考察服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/5/17
 */
public interface IMemberInspectService {

    /**
     * 获取“考察类型”下拉框条件
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<DropdownItem>> getPageConditions(HttpHeaders headers);

    /**
     * “新增会员审查” - 选择下级会员
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<SubMemberQueryVO>> pageSubMembers(HttpHeaders headers, NamePageVO pageVO);

    /**
     * “新增或修改会员审查” - 选择用户
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<UserQueryVO>> pageUsers(HttpHeaders headers, UserPageVO pageVO);

    /**
     * 分页查询会员考察
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberInspectPageQueryVO>> pageMemberInspect(HttpHeaders headers, MemberInspectPageVO pageVO);

    /**
     * 会员信息 - 会员详情 - 分页查询会员考察
     * @param memberId 上级会员Id
     * @param roleId    上级会员角色Id
     * @param subMember 下级会员
     * @param subRoleId 下级会员角色Id
     * @param current  当前页
     * @param pageSize 每页行数
     * @return 查询结果
     */
    Wrapper<PageData<MemberRecordInspectPageQueryVO>> pageMemberInspect(Long memberId, Long roleId, MemberDO subMember, Long subRoleId, int current, int pageSize);

    /**
     * 新增会员考察
     * @param headers Http头部信息
     * @param addVO 接口参数
     * @return 新增结果
     */
    Wrapper<Void> addMemberInspect(HttpHeaders headers, MemberInspectAddVO addVO);

    /**
     * 查询会员考察详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberInspectVO> getMemberInspect(HttpHeaders headers, CommonIdVO idVO);


    /**
     * 修改会员考察
     * @param headers Http头部信息
     * @param updateVO 接口参数
     * @return 修改结果
     */
    Wrapper<Void> updateMemberInspect(HttpHeaders headers, MemberInspectUpdateVO updateVO);

    /**
     * 删除会员考察
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 删除结果
     */
    Wrapper<Void> deleteMemberInspect(HttpHeaders headers, CommonIdVO idVO);
}
